/*
 * Pierna.cpp
 *
 *  Created on: 01/10/2013
 *      Author: ezequiel
 */

#include "Pierna.h"

Pierna::Pierna() {
	this->extremidadInferior = new ExtremidadPierna();
	this->extremidadMedia = new ExtremidadPierna();
	this->extremidadSuperior = new ExtremidadPierna();
	this->angulo[0]= 360;	//angulo extremidad superior
	this->angulo[1]= 45;	//angulo extremidad media
	this->angulo[2]= 50;	//angulo extremidad inferior
	for (int i = 0 ; i < 3 ; i++)
	{
		this->direccionAngular[i].x = 1.0;
		this->direccionAngular[i].y = 0.0;
		this->direccionAngular[i].z = 0.0;
		this->sube[i] = true;
	}

}

Pierna::~Pierna() {
	this->extremidadInferior->~ExtremidadPierna();
	this->extremidadMedia->~ExtremidadPierna();
	this->extremidadSuperior->~ExtremidadPierna();

}

void Pierna::render(GLuint handle, glm::mat4* matModelo) {
	glm::mat4  matriz = *matModelo;
	//TODO implementar el resto de las extremidades , no creo qe sea dificil
	matriz = glm::rotate(matriz, this->angulo[0], this->direccionAngular[0]);
	this->extremidadSuperior->render(handle, &matriz);
//	glm::mat4 matriz = glm::mat4 (1.0f);

	///extremidad media
	 matriz = glm::translate(matriz, glm::vec3(0.0, 0.0, 2.65));
	matriz = glm::rotate(matriz, this->angulo[1], this->direccionAngular[1]);
	this->extremidadMedia->render(handle, &matriz);
	///extremidad inferior
	matriz = glm::translate(matriz, glm::vec3(0.0, 0.0, 2.65));
	matriz = glm::rotate(matriz, this->angulo[2], direccionAngular[2]);
	this->extremidadInferior->render(handle, &matriz);
}

void Pierna::render(GLuint handle) {
}

void Pierna::rotar() {
//	rotacion extremidad alta //
if (this->sube[0]) this->angulo[0] = this->angulo[0] - 2;
else this->angulo[0] += 2;
if (this->angulo[0] == 350) this->sube[0]= false;
if (this->angulo[0] == 380) this->sube[0]= true;

// rotacion extremidad media //

if (this->sube[2]) this->angulo[2]++;
else this->angulo[2]--;
if (this->angulo[2] == 50) this->sube[2]= true;
if (this->angulo[2] == 75) this->sube[2]= false;
//cout << angulo[1] << endl;
}

void Pierna::setAnguloInicial(float anguloInicial, bool sube) {
	this->angulo[0] = anguloInicial;
	this->sube[0] = sube;

}

void Pierna::setTextureId(int n) {
	this->extremidadInferior->setTextureId(n);
	this->extremidadMedia->setTextureId(n);
	this->extremidadSuperior->setTextureId(n);
}

void Pierna::setCam(Camara* cam, glm::mat4 pr) {
	this->extremidadInferior->setCam(cam, pr);

	this->extremidadMedia->setCam(cam, pr);
	this->extremidadSuperior->setCam(cam, pr);
}
